package com.gljx.web.service;

import java.util.List;
import java.util.Map;

import com.gljx.web.Entity.TrainCharge;
import com.gljx.web.Entity.TrainChargeEntry;
import com.gljx.web.Entity.JournalEntry.TrainCollect;

public interface TrainChargeService {

	Map<String, Object> selectPageCount(String psql);

    Map<String, Object> selectPage(int pindex, String psql, int psize);
	
	
	/**
	 * 
	 * @param trainCharge 父类信息 
	 * @param fseq 序列
	 * @param cfstudentno 学员编码
	 * @param studentName 学员姓名
	 * @param cfsex 性别
	 * @param cfidcardno 学员身份证号
	 * @param cftjr 推荐人
	 * @param cfclazz 班级
	 * @param cfclazzamount 班级金额
	 * @param cfyishou 已收
	 * @param cfysje 应收
	 * @param cfguifei 规费
	 * @param cfpxf 培训费
	 * @param cfcash 现金
	 * @param cfcard 刷卡
	 * @param cfguazhang 挂账
	 * @param cfyhzz 银行转账
	 * @param cfshje 实收金额
	 * @param cfyhje 优惠金额
	 * @param cfyhj 优惠券
	 * @param cfqfje 欠费金额
	 * @param cfremark 备注
	 */
	void addTrainCharge(TrainCharge trainCharge,String fseq[], String cfstudentno[],String cfstudentid[],String cfsex[],String cfidcardno[],String cfidcardaddress[],
			String cftjr[],String cfclazz[], String cfclazzamount[],String cfyishou[], String cfysje[], String cfguifei[], String cfpxf[], 
			String cfcash[], String cfcard[], String cfguazhang[], String cfyhzz[],String cfshje[],String cfyhje[],String cfyhj[],String cfqfje[],String cfremark[]);
	/**
	 * 插入
	* @param train
	* @return
	* @author LiXiang  @date 2018年1月10日 下午3:46:31
	 */
	int insertSelective(TrainCharge train);
	
	TrainCharge queryByTrainChargeFid(String fid);
	
	/**
	 * 
	 * @param trainCharge 父类信息 
	 * @param fseq 序列
	 * @param cfstudentno 学员编码
	 * @param studentName 学员姓名
	 * @param cfsex 性别
	 * @param cfidcardno 学员身份证号
	 * @param cftjr 推荐人
	 * @param cfclazz 班级
	 * @param cfclazzamount 班级金额
	 * @param cfyishou 已收
	 * @param cfysje 应收
	 * @param cfguifei 规费
	 * @param cfpxf 培训费
	 * @param cfcash 现金
	 * @param cfcard 刷卡
	 * @param cfguazhang 挂账
	 * @param cfyhzz 银行转账
	 * @param cfshje 实收金额
	 * @param cfyhje 优惠金额
	 * @param cfyhj 优惠券
	 * @param cfqfje 欠费金额
	 * @param cfremark 备注
	 */
	void modifyTrainCharge(TrainCharge trainCharge,String fseq[], String cfstudentno[],String cfstudentid[],String cfsex[],String cfidcardno[],String cfidcardaddress[],
			String cftjr[],String cfclazz[], String cfclazzamount[],String cfyishou[], String cfysje[], String cfguifei[], String cfpxf[], 
			String cfcash[], String cfcard[], String cfguazhang[], String cfyhzz[],String cfshje[],String cfyhje[],String cfyhj[],String cfqfje[],String cfremark[]);

    int auditTrainCharge(List<TrainChargeEntry> trainChargeEntries, TrainCharge trainCharge);

	
	/**
	 * 根据时间查询收费金额
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryTrainChargeByTime(String companyId,String beginTime,String endTime);
	
	/**
	 * 根据时间查询补考收费
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryMakeupChargeByTime(String companyId,String beginTime,String endTime);
	/**
	 * 根据时间查询转班收费单 
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryWillmigerlByTime(String companyId,String beginTime,String endTime);
	/**
	 * 根据时间查询转班退费单 
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryTranSferByTime(String companyId,String beginTime,String endTime);
	/**
	 * 根据时间查询规费 
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryTurnexamCostByTime(String companyId,String beginTime,String endTime);
	/**
	 * 根据时间退、扣费金额
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryReturnPremiumByTime(String companyId,String beginTime,String endTime);
	/**
	 * 根据时间考前训练收费
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryOwnCarTrainByTime(String companyId,String beginTime,String endTime,Integer kemu);
	/**
	 * 根据时间其他杂费
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryOtherPayDemandByTime(String companyId,String beginTime,String endTime);
	/**
	 * 根据时间计时卡
	 * @param companyId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TrainCollect> queryTimeCardByTime(String companyId,String beginTime,String endTime);


	List<TrainCharge> selectTrainCharge(Map<String, String> map);

    int updateTrainCharge(List<TrainChargeEntry> trainChargeEntries,TrainCharge trainCharge);

	TrainCharge selectTrainChargePrice(Map<String, String> map);

}
